One or more aspects relate to the field of integration flows. In particular, one or more aspects relate to providing dynamic latency in integration flows.
An enterprise service bus (ESB) is a software architecture model used for designing and implementing communication between mutually interacting software applications in a service-oriented architecture (SOA). As a software architectural model for distributed computing, it is a specialty variant of the more general client server model and promotes agility and flexibility with regards to communication between applications.
Integration flows typically integrate two or more applications and are constructed by connecting multiple integration nodes together. A common integration pattern is an aggregation. In such a pattern, an incoming message enters an aggregation node (such as a fan out node) which may then send the message down multiple paths or may propagate the message down the same path multiple times.
An aggregation design pattern enables a single inbound request to map into multiple outbound service invocations, the responses from which can be aggregated into a single response to the original request. Aggregation design patterns are often utilized in ESB solutions to implement applications processing batch requests. These are often deployed to systems processing real time traffic and can have a negative impact on the responsiveness of the applications serving the requests.
In typical batch processing applications, the logic and messages are complex. Potentially, a single message may be several MB (megabytes) in size and result in hundreds of iterations, each with database inserts or invocations of external services, for example. Processing these can have a significant impact on other applications running within the same process.
Current solutions include throttling the batch processing applications by restricting the thread pool the batch runs in. Other solutions use workload placement of batch processing applications on separate processes (for example, additional cluster/cluster member).